import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class LocalCode {
	public static void main(String[] args) {
		
		List<Integer> choclatePackets = new ArrayList<Integer>();
		LocalCode code = new LocalCode();
//		code.fillList(choclatePackets);
		
		InputReader reader = new InputReader("C:\\sivravis\\dev\\study\\my-alg-exer\\BillGatesWithChoclates\\src\\input.txt");
		choclatePackets = reader.readFile();
		reader.close();
		
		int k = choclatePackets.remove(0);

		code.sort(choclatePackets);
		System.out.println("unfairness = "+ code.minimumUnfairness(choclatePackets,k));
	}
	
	public void sort(List<Integer> choclatePackets){
		Collections.sort(choclatePackets);		
	}
	public int minimumUnfairness(List<Integer> choclatePackets,int k){
		List<Integer> unfairnessValues = new ArrayList<Integer>();
		for (int i = 0; i < (choclatePackets.size()-k); i++){
			int unfairness = unfairness(choclatePackets,i,i+k);
			unfairnessValues.add(unfairness);
			
		}
		return Collections.min(unfairnessValues);
	}
	public int unfairness(List<Integer> choclatePackets , int from, int to){
		int unfairness = 0;
		if(to < choclatePackets.size()){
			List<Integer> kListChocs = choclatePackets.subList(from, to);
			unfairness = Collections.max(kListChocs) - Collections.min(kListChocs);
		}
		
		return unfairness;
	}
	
	public void fillList(List<Integer> choclatePackets){
		choclatePackets.add(4504);
		choclatePackets.add(1520);
		choclatePackets.add(5857);
		choclatePackets.add(4094);
		choclatePackets.add(4157);
		choclatePackets.add(3902);
		choclatePackets.add(822);
		choclatePackets.add(6643);
		choclatePackets.add(2422);
		choclatePackets.add(7288);
		choclatePackets.add(8245);
		choclatePackets.add(9948);
		choclatePackets.add(2822);
		choclatePackets.add(1784);
		choclatePackets.add(7802);
		choclatePackets.add(3142);
		choclatePackets.add(9739);
		choclatePackets.add(5629);
		choclatePackets.add(5413);
		choclatePackets.add(7232);				

	}
}
